package a.a;

import a.c.ab;
import a.c.d;
import a.c.e;
import a.c.k;
import a.c.n;
import a.c.q;
import a.c.v;
import a.c.w;
import a.c.y;
import a.c.z;
import a.i.db;
import a.i.u;

public class bb
{
  public static boolean a;
  
  public static ab a(q paramq, e parame1, e parame2, boolean paramBoolean)
  {
    int i = m.b;
    boolean bool = m.a;
    ab localab = new ab();
    a.c.x localx = paramq.B();
    h local3 = new h()
    {
      private final a.c.x val$predEdgeMap;
      
      protected void a(d paramAnonymousd, e paramAnonymouse)
      {
        this.val$predEdgeMap.a(paramAnonymouse, paramAnonymousd);
      }
    };
    local3.a(paramBoolean);
    local3.b(false);
    local3.a(paramq, parame1);
    d locald = (d)localx.get(parame2);
    if (i == 0)
    {
      if (locald != null) {
        localab.c(locald);
      }
    }
    else
    {
      e locale = locald.a(parame2);
      do
      {
        do
        {
          if (localx.get(locale) == null) {
            break;
          }
          locald = (d)localx.get(locale);
        } while (locald == null);
        locale = locald.a(locale);
        if (i != 0) {
          break label181;
        }
        localab.c(locald);
        if (i != 0) {
          break label173;
        }
        if (bool) {
          break label179;
        }
      } while (!bool);
      if (locale != parame1) {
        localab.clear();
      }
    }
    label173:
    paramq.a(localx);
    label179:
    label181:
    return localab;
  }
  
  public static ab a(q paramq)
  {
    int k = m.b;
    boolean bool = m.a;
    a_[] arrayOfa_ = new a_[paramq.k()];
    do
    {
      for (int i = 0; !bool; i++)
      {
        if (i >= arrayOfa_.length) {
          break;
        }
        arrayOfa_[i] = new a_(null);
      }
    } while (k != 0);
    h local2 = new h()
    {
      private final bb.a_[] val$infoArray;
      
      protected void a(d paramAnonymousd, e paramAnonymouse)
      {
        int i = m.b;
        e locale = paramAnonymousd.a(paramAnonymouse);
        bb.a_ locala_1 = this.val$infoArray[locale.f()];
        bb.a_ locala_2 = this.val$infoArray[paramAnonymouse.f()];
        if (i == 0) {
          if (locala_2.c + 1 > locala_1.c)
          {
            locala_1.e = locala_1.c;
            locala_1.b = locala_1.a;
            locala_2.c += 1;
            locala_1.a = paramAnonymousd;
            if (i == 0) {
              if (!m.a) {
                return;
              }
            }
          }
          else
          {
            if (i != 0) {
              break label136;
            }
          }
        }
        if (locala_2.c + 1 > locala_1.e)
        {
          locala_1.e = (locala_2.c + 1);
          label136:
          locala_1.b = paramAnonymousd;
        }
      }
    };
    local2.a(false);
    local2.a(paramq);
    int j = -1;
    Object localObject1 = null;
    Object localObject2 = paramq.v();
    do
    {
      if (!((w)localObject2).e()) {
        break;
      }
      localObject3 = ((w)localObject2).d();
      localObject4 = arrayOfa_[localObject3.f()];
      if (k == 0)
      {
        if (((a_)localObject4).c + ((a_)localObject4).e > j)
        {
          j = ((a_)localObject4).c + ((a_)localObject4).e;
          localObject1 = localObject3;
        }
        ((w)localObject2).f();
      }
    } while (!bool);
    localObject2 = new ab();
    Object localObject3 = localObject1;
    Object localObject4 = arrayOfa_[localObject3.f()].a;
    if (localObject4 != null) {
      ((ab)localObject2).a(localObject4);
    }
    while (k != 0)
    {
      localObject3 = ((d)localObject4).a((e)localObject3);
      if (k != 0) {
        break label249;
      }
      localObject4 = arrayOfa_[localObject3.f()].a;
      if (bool) {
        break label239;
      }
      if (!bool) {
        break;
      }
    }
    localObject3 = localObject1;
    label239:
    label249:
    localObject4 = arrayOfa_[localObject3.f()].b;
    do
    {
      while (!bool)
      {
        if (localObject4 == null) {
          break;
        }
        if (bool) {
          break label302;
        }
        ((ab)localObject2).b(localObject4);
        localObject3 = ((d)localObject4).a((e)localObject3);
        localObject4 = arrayOfa_[localObject3.f()].a;
      }
    } while (k != 0);
    label302:
    return localObject2;
  }
  
  public static void a(q paramq, e parame, n paramn1, a.c.x paramx, n paramn2)
  {
    int i = m.b;
    boolean bool = m.a;
    a.c.bb localbb = x.a(paramq);
    w localw = localbb.l();
    if (localw.e()) {}
    while (i != 0)
    {
      paramx.a(localw.d(), -100.0D);
      if (i != 0) {
        break label89;
      }
      localw.f();
      if (bool) {
        break label84;
      }
      if (!bool) {
        break;
      }
    }
    paramx.a(parame, 0.0D);
    label84:
    label89:
    localw = localbb.l();
    label228:
    do
    {
      if (!localw.e()) {
        break;
      }
      e locale = localw.d();
      double d = paramx.getDouble(locale);
      a.c.m localm = locale.n();
      do
      {
        do
        {
          if (!localm.e()) {
            break label228;
          }
          d locald = localm.a();
          if (bool) {
            break;
          }
          if (paramn2.getBool(locald))
          {
            if (i != 0) {
              continue;
            }
            if (d + paramn1.getDouble(locald) > paramx.getDouble(locald.f())) {
              paramx.a(locald.f(), d + paramn1.getDouble(locald));
            }
          }
          localm.f();
        } while (!bool);
        localw.f();
      } while (i != 0);
    } while (!bool);
  }
  
  public static ab b(q paramq)
  {
    a.i.t local1 = new a.i.t()
    {
      public int getInt(Object paramAnonymousObject)
      {
        return 1;
      }
    };
    return a(paramq, local1);
  }
  
  public static ab a(q paramq, k paramk)
  {
    int k = m.b;
    boolean bool = m.a;
    if (k == 0) {
      if (paramq.m() == 0) {
        return new ab();
      }
    }
    e locale1 = paramq.i();
    e locale2 = paramq.i();
    a.c.x localx1 = paramq.B();
    a.c.x localx2 = paramq.B();
    n localn = paramq.C();
    Object localObject1 = paramq.w();
    if (((a.c.m)localObject1).e())
    {
      localn.a(((a.c.m)localObject1).a(), paramk.getInt(((a.c.m)localObject1).a()));
      ((a.c.m)localObject1).f();
    }
    for (;;)
    {
      if ((k != 0) || (!bool))
      {
        if (!bool) {
          break;
        }
        if (k == 0) {
          localx2.a(locale2, -1);
        }
      }
    }
    localObject1 = paramq.v();
    Object localObject2;
    do
    {
      if (!((w)localObject1).e()) {
        break;
      }
      localObject2 = ((w)localObject1).d();
      if (k == 0)
      {
        if (localObject2 != locale1) {
          if (k == 0)
          {
            if (localObject2 != locale2) {
              localx2.a(localObject2, -1);
            }
          }
          else
          {
            d locald1;
            if (k == 0) {
              if (((e)localObject2).d() == 0)
              {
                locald1 = paramq.a(locale1, (e)localObject2);
                localn.a(locald1, 0);
              }
            }
            if (k != 0) {
              continue;
            }
            if (((e)localObject2).e() == 0)
            {
              locald1 = paramq.a((e)localObject2, locale2);
              localn.a(locald1, 0);
            }
          }
        }
        ((w)localObject1).f();
      }
    } while (!bool);
    localObject1 = x.a(paramq);
    break label309;
    label281:
    if (!((a.c.bb)localObject1).isEmpty()) {}
    Object localObject3;
    label309:
    do
    {
      localObject2 = ((a.c.bb)localObject1).o();
      int i;
      d locald2;
      e locale4;
      int j;
      do
      {
        i = localx2.getInt(localObject2);
        localObject3 = ((e)localObject2).n();
        if (!((a.c.m)localObject3).e()) {
          break;
        }
        locald2 = ((a.c.m)localObject3).a();
        locale4 = locald2.f();
        j = localx2.getInt(locale4);
      } while (k != 0);
      if (bool) {
        break label281;
      }
      if (i + localn.getInt(locald2) > j)
      {
        localx2.a(locale4, i + localn.getInt(locald2));
        localx1.a(locale4, locald2);
      }
      ((a.c.m)localObject3).f();
      if (!bool) {
        break;
      }
      localObject2 = new ab();
    } while (k != 0);
    e locale3 = ((d)localx1.get(locale2)).e();
    do
    {
      do
      {
        if (locale3 == locale1) {
          break;
        }
        localObject3 = (d)localx1.get(locale3);
        locale3 = ((d)localObject3).e();
      } while (locale3 == locale1);
      if (k != 0) {
        break label538;
      }
      ((ab)localObject2).a(localObject3);
      if (k != 0) {
        break label530;
      }
      if (bool) {
        break label536;
      }
    } while (!bool);
    paramq.a(locale1);
    paramq.a(locale2);
    paramq.a(localx2);
    paramq.a(localx1);
    label530:
    paramq.a(localn);
    label536:
    label538:
    return localObject2;
  }
  
  public static a.c.bb a(ab paramab)
  {
    int i = m.b;
    boolean bool = m.a;
    a.c.bb localbb = new a.c.bb();
    if ((i != 0) || (!paramab.isEmpty()))
    {
      v localv = paramab.f();
      d locald1 = (d)localv.c();
      if (i == 0)
      {
        if (paramab.size() > 1)
        {
          localv = localv.a();
          d locald2 = (d)localv.c();
          e locale = null;
          if (i == 0)
          {
            if (locald1.e() != locald2.e())
            {
              if (i != 0) {
                break label156;
              }
              if (locald1.e() != locald2.f()) {}
            }
            else
            {
              localbb.add(locald1.f());
              localbb.add(locald1.e());
            }
          }
          else
          {
            locale = locald1.e();
            break label158;
          }
          localbb.add(locald1.e());
          localbb.add(locald1.f());
          label156:
          locale = locald1.f();
          label158:
          do
          {
            if (localv == null) {
              break;
            }
            locald1 = (d)localv.c();
            locale = locald1.a(locale);
            if (i == 0)
            {
              if (bool) {
                break label229;
              }
              localbb.add(locale);
              localv = localv.a();
            }
          } while (!bool);
        }
        localbb.add(locald1.e());
        if (i != 0) {
          break label229;
        }
      }
      localbb.add(locald1.f());
    }
    label229:
    return localbb;
  }
  
  public static boolean a(q paramq, a.c.bb parambb, e parame1, e parame2, n paramn)
  {
    int i = m.b;
    boolean bool2 = m.a;
    a.c.x localx = paramq.B();
    w localw = paramq.v();
    if (localw.e()) {}
    while (i != 0)
    {
      localx.a(localw.d(), false);
      if (i != 0) {
        break label87;
      }
      localw.f();
      if (bool2) {
        break label83;
      }
      if (!bool2) {
        break;
      }
    }
    localx.a(parame1, true);
    label83:
    label87:
    localw = parambb.l();
    label211:
    do
    {
      do
      {
        if (!localw.e()) {
          break label228;
        }
        e locale = localw.d();
        if (bool2) {
          break label236;
        }
        if (locale.equals(parame2)) {
          break label228;
        }
        if (i != 0) {
          break;
        }
        if (localx.getBool(locale))
        {
          a.c.m localm = locale.n();
          do
          {
            if (!localm.e()) {
              break label211;
            }
            if (bool2) {
              break;
            }
            if (paramn.getBool(localm.a())) {
              localx.a(localm.a().f(), true);
            }
            localm.f();
          } while (!bool2);
        }
        localw.f();
      } while (i != 0);
    } while (!bool2);
    label228:
    label236:
    boolean bool1 = localx.getBool(parame2);
    paramq.a(localx);
    return bool1;
  }
  
  public static final void a(q paramq, e parame1, e parame2, n paramn)
  {
    int i = m.b;
    boolean bool = m.a;
    boolean[] arrayOfBoolean1 = new boolean[paramq.j()];
    a(parame1, arrayOfBoolean1);
    boolean[] arrayOfBoolean2 = new boolean[paramq.j()];
    b(parame2, arrayOfBoolean2);
    a.c.m localm = paramq.w();
    do
    {
      if (!localm.e()) {
        break;
      }
      d locald = localm.a();
      if ((i != 0) || (arrayOfBoolean1[locald.e().f()] != 0)) {
        if (i != 0) {}
      }
      paramn.a(locald, arrayOfBoolean2[locald.f().f()] != 0);
      localm.f();
    } while (!bool);
  }
  
  public static ab[] a(q paramq, boolean paramBoolean)
  {
    int i = m.b;
    boolean bool = m.a;
    z localz = new z();
    a.c.x localx = db.a(new boolean[paramq.j()]);
    w localw = paramq.v();
    label242:
    do
    {
      if (!localw.e()) {
        break;
      }
      e locale1 = localw.d();
      if (!localx.getBool(locale1))
      {
        ab localab = new ab();
        if (i == 0)
        {
          if (a(locale1, paramBoolean)) {
            localx.a(locale1, true);
          }
        }
        else
        {
          d locald1 = a(locale1, null);
          if ((i == 0) && (locald1.g())) {
            break label321;
          }
          d locald2 = a(locale1, locald1);
          e locale2 = locald1.a(locale1);
          localab.a(locald1);
          do
          {
            do
            {
              if (!a(locale2, paramBoolean)) {
                break;
              }
              if (bool) {
                break label242;
              }
              if (localx.getBool(locale2)) {
                break;
              }
              localx.a(locale2, true);
              locald1 = a(locale2, locald1);
              localab.a(locald1);
              locale2 = locald1.a(locale2);
            } while (!bool);
            localab.b(locald2);
          } while (i != 0);
          locale2 = locald2.a(locale1);
          do
          {
            if (!a(locale2, paramBoolean)) {
              break;
            }
            if (bool) {
              break label311;
            }
            if (localx.getBool(locale2)) {
              break;
            }
            localx.a(locale2, true);
            locald2 = a(locale2, locald2);
            localab.b(locald2);
            locale2 = locald2.a(locale2);
          } while (!bool);
        }
        if (i != 0) {
          break label334;
        }
        if (localab.size() > 0) {
          localz.add(localab);
        }
      }
      localw.f();
    } while (!bool);
    label311:
    label321:
    label334:
    return (ab[])localz.toArray(new ab[localz.size()]);
  }
  
  static final boolean a(e parame, boolean paramBoolean)
  {
    int i = m.b;
    if (i == 0) {
      if (paramBoolean)
      {
        if (i == 0)
        {
          if (parame.d() != 1) {
            break label40;
          }
          if (i != 0) {
            break label37;
          }
        }
        label37:
        label40:
        return parame.e() == 1;
      }
    }
    if (i == 0) {}
    return parame.c() == 2;
  }
  
  static final d a(e parame, d paramd)
  {
    int i = m.b;
    d locald = parame.i();
    if (i == 0)
    {
      if (locald != null)
      {
        if (i != 0) {
          break label34;
        }
        if (locald != paramd) {
          return locald;
        }
      }
      locald = parame.h();
    }
    label34:
    if (i == 0)
    {
      if (locald != null)
      {
        if (i != 0) {
          break label58;
        }
        if (locald != paramd) {
          return locald;
        }
      }
      locald = parame.j();
    }
    label58:
    if (i == 0)
    {
      if (locald != null)
      {
        if (i != 0) {
          break label82;
        }
        if (locald != paramd) {
          return locald;
        }
      }
      locald = parame.k();
    }
    label82:
    if (((i != 0) || (locald != null)) && ((i != 0) || (locald != paramd))) {
      return locald;
    }
    throw new IllegalStateException("otherEdge failed");
  }
  
  private static void a(e parame, boolean[] paramArrayOfBoolean)
  {
    int j = m.b;
    boolean bool = m.a;
    paramArrayOfBoolean[parame.f()] = true;
    d locald = parame.h();
    do
    {
      if (locald == null) {
        break;
      }
      e locale = locald.f();
      int i = locale.f();
      if (j == 0)
      {
        if (paramArrayOfBoolean[i] == 0) {
          a(locale, paramArrayOfBoolean);
        }
        locald = locald.i();
      }
    } while (!bool);
  }
  
  private static boolean c(q paramq, boolean paramBoolean)
  {
    int i = m.b;
    boolean bool = m.a;
    w localw;
    if (paramBoolean)
    {
      localw = paramq.v();
      if (localw.e())
      {
        if ((i == 0) && (bool)) {
          break label90;
        }
        if (i == 0)
        {
          if (localw.d().d() == 1) {
            if (i != 0) {
              break label81;
            }
          }
        }
        else {
          if (localw.d().e() == 1) {
            break label74;
          }
        }
      }
      label74:
      label81:
      while (i != 0)
      {
        return false;
        localw.f();
        if (!bool) {
          break;
        }
      }
      label90:
      return true;
    }
    do
    {
      localw = paramq.v();
      while (!bool)
      {
        if (!localw.e()) {
          break;
        }
        if ((i == 0) && (bool)) {
          break label145;
        }
        if (localw.d().c() != 2) {
          return false;
        }
        localw.f();
      }
    } while (i != 0);
    label145:
    return true;
  }
  
  private static void b(e parame, boolean[] paramArrayOfBoolean)
  {
    int j = m.b;
    boolean bool = m.a;
    paramArrayOfBoolean[parame.f()] = true;
    d locald = parame.i();
    do
    {
      if (locald == null) {
        break;
      }
      e locale = locald.e();
      int i = locale.f();
      if (j == 0)
      {
        if (paramArrayOfBoolean[i] == 0) {
          b(locale, paramArrayOfBoolean);
        }
        locald = locald.j();
      }
    } while (!bool);
  }
  
  public static ab[] b(q paramq, e parame1, e parame2, boolean paramBoolean)
  {
    return t.a(paramq, parame1, parame2, paramBoolean, null);
  }
  
  public static y c(q paramq, e parame1, e parame2, boolean paramBoolean)
  {
    return t.a(paramq, parame1, parame2, paramBoolean);
  }
  
  public static ab[] a(q paramq, e parame1, e parame2, boolean paramBoolean, u paramu)
  {
    return t.a(paramq, parame1, parame2, paramBoolean, paramu);
  }
  
  private static class a_
  {
    d a;
    d b;
    int c;
    int e;
    
    private a_() {}
    
    a_(bb.3 param3)
    {
      this();
    }
  }
}


/* Location:           E:\idea\
 * Qualified Name:     a.a.bb
 * JD-Core Version:    0.7.0.1
 */